package DynamicProgramming;

public class 买卖股票的最佳时机含冷冻期 {
    /*
        状态分析：
        0 -> 持有股票状态，今天或者之前买入
        1 -> 未持有股票并第二天可买入状态，之前卖出股票，度过冷静期或今天为冷静期
        2 -> 未持有股票并第二天不可买入状态，今天卖出股票，第二天为冷静期
     */
    public int maxProfit(int[] prices) {
        int[] dp = new int[3];
        dp[0] = -prices[0];
        for (int i = 1; i < prices.length; i++) {
            dp[0] = Math.max(dp[1] - prices[i], dp[0]);
            dp[1] = Math.max(dp[2], dp[1]);
            dp[2] = dp[0] + prices[i];
        }
        return Math.max(dp[1], dp[2]);
    }
}
